#pragma once

#include <array>
#include <memory>
#include <transfer/ITransfer.h>
#include "someip/someip_structs.h"
#include "someip/someip_signals.h"

namespace ecarx::transfer{
    
    class SomeIPManager{
        protected:
            std::shared_ptr<ITransfer> mSomeIPConn;
        public:
        SomeIPManager(std::shared_ptr<ITransfer> conn):mSomeIPConn(conn){

        }

        SettingDrivingInfo getSettingDrivingInfoInf();

        bool setSettingDrivingInfoInf(const SettingDrivingInfo& value);

        SettingAEBInfo getSettingAEBInfoInf();

        bool setSettingAEBInfoInf(const SettingAEBInfo& value);

        SettingLKAInfo getSettingLKAInfoInf();

        bool setSettingLKAInfoInf(const SettingLKAInfo& value);

        SettingFCTAInfo getSettingFCTAInfoInf();

        bool setSettingFCTAInfoInf(const SettingFCTAInfo& value);

        int8_t getSettingRCTAInfoInf();

        bool setSettingRCTAInfoInf(const int8_t value);

        int8_t getSettingDOWInfoInf();

        bool setSettingDOWInfoInf(const int8_t value);

        SettingBSDInfo getSettingBSDInfoInf();

        bool setSettingBSDInfoInf(const SettingBSDInfo& value);

        SettingTSIInfo getSettingTSIInfoInf();

        bool setSettingTSIInfoInf(const SettingTSIInfo& value);

        int8_t getSettingSRVInfoInf();

        bool setSettingSRVInfoInf(const int8_t value);

        int8_t getSettingEMAInfoInf();

        bool setSettingEMAInfoInf(const int8_t value);

        SettingTLAInfo getSettingTLAInfoInf();

        bool setSettingTLAInfoInf(const SettingTLAInfo& value);

        int8_t getSettingCMSRInfoInf();

        bool setSettingCMSRInfoInf(const int8_t value);

        int8_t getSettingVoiceWarningInfoInf();

        bool setSettingVoiceWarningInfoInf(const int8_t value);

        int8_t getSettingAPAInfoInf();

        bool setSettingAPAInfoInf(const int8_t value);

        SettingRPAInfo getSettingRPAInfoInf();

        bool setSettingRPAInfoInf(const SettingRPAInfo& value);

        int8_t getSettingLPInfoInf();

        bool setSettingLPInfoInf(const int8_t value);

        int32_t getSelectedSlotIdInf();

        bool setSelectedSlotIdInf(const int32_t value);

        bool setSpeedLimitTriggerInf(const int8_t value);

        bool setNavExitTriggerInf(const int8_t value);

        bool setNzpStateTriggerInf(const int8_t value);

        bool setCustomParkingInf(const CustomParking& value);

        bool setNavigationInfoInf(const NavigationInfo& value);

        AlarmInfo getAlarmInfoInf();

        std::vector<ID32bit> getFaultListInfoInf();

        FeatureState getFeatureStateInf();

        HighDefinitionMap getHighDefinitionMapInf();

        std::vector<Object> getPercepFusionObjsInf();

        std::vector<APASlot> getPerceptionAPASlotsInf();

        std::vector<TrafficLight> getPercepTrafficLightsInf();

        PlanningTrajectory getPlanningTrajectoryInf();

        RelativeLocalization getRelativeLocalizationInf();

        int8_t getAlignedSpeedSettingInf();

        bool setAlignedSpeedSettingInf(const int8_t value);

        int8_t getPebSwitchSettingInf();

        bool setPebSwitchSettingInf(const int8_t value);

        bool setOnlineCalibTriggerInf(const IdtOnlineCalibTrigger& value);

        std::vector<EnvRoadLaneLine> getLaneFunction();

        bool setLaneFunction(const std::vector<EnvRoadLaneLine>& value);

        AbsoluteLocalization getAbsoluteLocalizationInf();

        bool setAbsoluteLocalizationInf(const AbsoluteLocalization& value);

        bool setDHUInquireIssueLogInf(const IdtDHUInquireIssueLog& value);

        bool setSettingInitializationInf(const IdtSettingInitialization& value);

        int8_t getSettingSGWInfoInf();

        bool setSettingSGWInfoInf(const int8_t value);

        IdtSettingInfo getSettingCheckInf();

        bool setSettingCheckReq(const IdtSettingCheck& value);

        bool setNavigationStsInf(const int8_t value);

        int8_t getAPAnobtntriSwitchInf();

        bool setAPAnobtntriSwitchInf(const int8_t value);

        int8_t getSettingRCTBInfoInf();

        bool setSettingRCTBInfoInf(const int8_t value);

        int8_t getAccfushSwitchType();

        bool setAccfushSwitchType(const int8_t value);

        int32_t getALCAstateInf();

        int8_t getDispTSIInfoForLgtCtrlSeN();

        bool setDispTSIInfoForLgtCtrlSeN(const int8_t value);

        int32_t getTSISpeedLimitUnitIconSeN();

        APAparkInfo getAPAparkinfoInf();

        bool setAPAparkinfoInf(const APAparkInfo& value);

        int8_t getBigdataSpdLimSwitchInf();

        bool setBigdataSpdLimSwitchInf(const int8_t value);

        SettingAEBFCWInfo getSettingAEBFCWInfoInf();

        bool setSettingAEBFCWInfoInf(const SettingAEBFCWInfo& value);

        int32_t getSettingRCTABInfoInf();

        bool setSettingRCTABInfoInf(const int32_t value);

    };
}
